Управление GPIO

После установки сред Vivado и Vitis в Ubuntu, вы можете разрабатывать приложения с использованием Vitis в системе Ubuntu. Аналогично Windows, вам необходимо сначала создать платформенный проект, а затем создать соответствующий проект приложения.

Настройка проекта Vitis

Создание платформенного проекта

image-20250709112858375

Когда мы создавали проект Petalinux, мы уже импортировали XSA файл в Ubuntu. На этом этапе выберите этот XSA файл и выберите Linux в качестве системы: нажмите finish.

image-20250709112955359

Создание проекта приложения

Создайте проект приложения. На этот раз мы создадим только один проект приложения и организуем различные тесты периферии в модули. Сначала создайте проект приложения:

image-20250709113105988

image-20250709113135071

image-20250709113153767

image-20250710100458596

image-20250710100546445

image-20250709113326894

Нажмите finish, и проект приложения создан.

Текущая конфигурация GPIO включает 2 MIO LED/2 EMIO LED, 2 MIO KEY/2 EMIO KEY и один зуммер.

Управление GPIO через sysfs

В системе Linux GPIO можно удобно управлять через интерфейс sysfs. Ниже приведено, как использовать sysfs для управления GPIO на платформе Zynq-7020.

Определение номера GPIO

GPIO Zynq-7020 разделены на:

Сначала вам нужно определить номер GPIO, которым вы хотите управлять в системе Linux. Номер gpiochips в /sys/class/gpio соответствует первому GPIO и номеру MIO0, который обычно равен 906.

image-20250709114610103

Формула расчета номера GPIO:

Например:

Экспорт GPIO

Предполагая, что вы хотите управлять EMIO0, вам нужно сначала экспортировать этот GPIO.

Установка направления GPIO

Установите GPIO в режим вывода или ввода:

Чтение и запись значений GPIO

Режим вывода (управление светодиодами и т.д.):

Режим ввода (чтение кнопок и т.д.):

Отмена экспорта GPIO

После использования вы можете отменить экспорт:

Управление через программу

Добавление кода в проект Vitis

Щелкните правой кнопкой мыши "src"->"new"->"Folder", чтобы создать папки GPIO и TEST:

image-20250710120437525

image-20250710120520283

Щелкните правой кнопкой мыши "GPIO"->"new"->"File", чтобы создать соответствующие файлы .c/.h; щелкните правой кнопкой мыши "TEST"->"new"->"File", чтобы создать соответствующие файлы .c; щелкните правой кнопкой мыши "src"->"new"->"File", чтобы создать main.c/main.h.

image-20250710120556640

После добавления соответствующего кода окончательная структура проекта выглядит следующим образом:

image-20250710120833354

Компиляция и отладка

Подключение IP-адреса

Откройте Vitis, нажмите на следующую иконку:

image-20250710141903115

Выберите Linux Agent по умолчанию и дважды щелкните, чтобы настроить этот Agent:

image-20250710142023761

Во всплывающем интерфейсе введите IP-адрес платы разработки в поле Host, оставьте порт по умолчанию, изменять не нужно:

image-20250710142109417

После заполнения вы можете нажать Test Connection, чтобы проверить, успешно ли соединение или нет. Следующее содержание указывает на успешное соединение:

image-20250710142239180

Нажмите ok для выхода.

Изменение пути загрузки программы

Поскольку путь загрузки по умолчанию - это первый раздел SD-карты, а первый раздел по умолчанию используется для хранения образов ядра, BOOT.BIN и другой информации. Поэтому создайте новую папку app в /home/root и загрузите скомпилированный .elf файл в эту папку.

image-20250714121606681

image-20250714121125768

Отладка

Вы можете напрямую нажать на иконку в верхнем левом углу, чтобы скомпилировать код, или нажать "build project", как раньше, для компиляции:

image-20250710133350018

Если возникает такая ошибка

image-20250710135004129

Соответствующее решение - добавить путь к файлу заголовка в путь поиска.

Щелкните правой кнопкой мыши на проекте, выберите "C/C++ Build Settings":

image-20250710134241403

image-20250710134400330

image-20250710135133836

После "Add":

image-20250710135148364

После добавления страница:

image-20250710135654166

Теперь компиляция может быть успешной.

Во время отладки Vitis загрузит код в директорию /home/root/app платы разработки для запуска. В этот момент вы можете использовать Vitis для пошаговой отладки или отладки с точками останова.

Основной код